
let title="多多视频";
let storage_name_key;
let fx_ty;  //移动方向   1：向上移除  默认   2：从下移除
/*****手机状态下的  基础值******/
let recents_depth_v;   /***depth的值情况*****/
let recents_id_v;      /****id的值情况****/
/********* */
let recents_zt_arr;   //recents状态验证 关键词

let  filter_temp_Obj=[];  //动态临时任务过滤对象  json格式存储  (方案1组合)
 


let p_arr = [""];     //任务定位器
//"逛逛得奖励","浏览页面","逛逛页面","精选会场","看看页面"
let filter_arr=[""];  //任务过滤器 (不被执行任务)

let jh_list_arr=[""]; //可执行任务【去完成中】

let ui_rw_main_arr=["分享","关注","推荐"];//确定任务界面关键词   多元素方案
 


let fz=true;
let ft=true;
let rw_list;     //任务列表
let rw_list_jg;  //奖励金额
let rw_list_title;//标题
let rw_list_ms;   //描述


let  filter_dt_t=true;  //动态过滤，增量
let rwtype;  //任务类型(通过检测器，检测任务类型)

let rw_list_obj_json={}; //json的任务对象
 


 app_main();


//【任务-启动器】启动任务
function  app_main(){
let run_z=false;
  try {
    device.keepScreenOn();//一直保持屏幕常亮  【有效】
    // device.cancelKeepingAwake();//来取消屏幕常亮。
  
 // toast("启动");
  initializeData();


  //加入首页判断
  //ui_rw_RollBACK(1,["多多视频","个人中心"],2,7);

  
 
   
  console.info("进入了么");
  //验证是否进入制定页面
  for(let i=0;i<100;i++){
    if(p_Search_element_contains(1,["多多视频","个人中心"])){
      run_z=true;
      break;
    }
    sleep(200);
 
  }
    


  if(run_z){
     
    
 /********
 * 
 * 进入多多视频页面
 */
 if(p_Search_element_contains(1,["多多视频","个人中心"])){
    let zxj_but=className("android.view.View").text("多多视频").enabled(true).findOnce();
    if(!(zxj_but && zxj_but.text()=="多多视频")){
      zxj_but=className("android.widget.TextView").text("多多视频").enabled(true).findOnce();
    }
    if(!(zxj_but && zxj_but.text()=="多多视频")){
        zxj_but=className("android.widget.Button").text("多多视频").enabled(true).findOnce();
      }

    if(zxj_but && zxj_but.text()=="多多视频"){
      click(zxj_but.bounds().centerX(),zxj_but.bounds().centerY());
      sleep(3000);
      p_for_clear_div_main(5,0.1);
      for_clear_div_main(5,0.1);  //循环5轮，每轮停留1秒
    }
  }

    
    sleep(1000);
  p_for_clear_div_main(10,0.1);
  for_clear_div_main(10,0.1);  //循环5轮，每轮停留1秒

 
  rw_main_run(); //执行
  sleep(2000);
 
  


 sleep(2000);
 recents_romve_app_name("拼多多",1,recents_zt_arr,0.5,2,fx_ty);   //移除完成的任务应用
 //关闭应用


  }



  //sleep(1000);
 // toast("结束了");
  console.info("任务结束");

  run_success();  //

} catch (error) {
  toast("网络异常");
  console.info("异常任务");
  run_error();
}finally{
 
}

}



/**********
 *  
 *    任务主方法
 * 
 */
function rw_main_run(){
  fz=true;

  let fileter_temp_s_obj=""; //动态临时任务过滤对象  string格式存储（方案3组合）
    //清除遮罩层
    p_for_clear_div_main(2,0.1);
    for_clear_div_main(5,0.1); 

    

while(fz){
  ft=true;
  
  //清除遮罩层
 // p_for_clear_div_main(5,0.1);
  for_clear_div_main(4,0.1); 

 /**************/
 if(p_Search_element_contains(1,ui_rw_main_arr)){
    for(let i=0;i<5000;i++){

        if(p_Search_element_contains(1,["再滑","得金币"])){          
            break;
        }
        if(p_Search_element_contains(1,["下滑","得金币"])){
            break;
        }
         if(i>50 && !(p_Search_element_contains(1,["得金币"]) || p_Search_element_contains(1,["得现金"]))){
          //触发50次的阀值，停止
          //toast("触发关停");
          break;
        }
      
        simulator_move(1,2);
        sleep((Math.floor(Math.random()* (5 - 2 + 1)) + 2)*1000);  //停留随机 2-5秒
    }
  }
 
if(ft){
  fz=false;
}


/****总共2秒清除  5轮****/
//for_clear_div_main(20,0.1); 
//p_for_clear_div_main(10,0.1);

}

}
 
  
  

/*******
 * 任务过滤器
 *  
 *   防止执行不需要执行的任务
 *   
 */
function  p_filter_rwobj(o){
   
    if(filter_arr.indexOf(o)>-1){
        return true;
    }else{
        return false;
    }
  }
  
  
  
  /*******
   * 清除遮罩层  
   *   【循环次数】
   * n：次数
   * s: 停留时间
   */
  function for_clear_div_main(n,s){
      for(let i=0;i<n;i++){
      // console.info("清楚遮罩层"+(i+1)+"轮"+",并且每轮"+s+"秒");
          clear_div_main();
          sleep(s*1000);
      }
   }
    
   //clear_div_main();
   /*******
   * 遮罩层
   * 
   */
  function  clear_div_main(){
      let clear_div;
      //console.log("a-111111111"+new Date());

      
 
 
  }
   
   
     
   
   
    /*******
    * 清除遮罩层  
    *   【循环次数】
    * n：次数
    * s: 停留时间
    */
    function p_for_clear_div_main(n,s){
     for(let i=0;i<n;i++){
     
         p_clear_div_main();
         sleep(s*1000);
     }
   }
   
   /********
   *【公共通用方法】
   *    清除遮罩层
   * 
   * 清除一个通用的遮罩层方法
   * 
   */
   function  p_clear_div_main(){
       /*****进入前的问题****/
      // console.log("p-11111111111"+new Date());
       let  clear_div=className("android.widget.Button").text("拒绝").enabled(true).findOnce();
       if(clear_div  &&  clear_div.text()=="拒绝"){
      // toast("找到了"+aaa.bounds().right);
    
       click(clear_div.bounds().centerX(),clear_div.bounds().centerY());
       sleep(2000);
       }else{
      // toast("找不到");
       }
  
  
    //  console.log("p-444444444444444"+new Date());
      if(p_Search_element_contains(1,["开启定位服务权限",""])){
        clear_div=className("android.widget.TextView").text("").enabled(true).findOnce();
        if(!(clear_div  && clear_div.text()=="")){
           clear_div=className("android.view.View").text("").enabled(true).findOnce();
        }
        if((clear_div  && clear_div.text()=="")){
    
           click(clear_div.bounds().centerX(),clear_div.bounds().centerY());
           sleep(2000);
        }
      }
  
    //  console.log("p-55555555555555555"+new Date());
      if(p_Search_element_contains(1,["开启地理位置权限",""])){
        clear_div=className("android.widget.TextView").text("").enabled(true).findOnce();
        if(!(clear_div  && clear_div.text()=="")){
           clear_div=className("android.view.View").text("").enabled(true).findOnce();
        }
        if((clear_div  && clear_div.text()=="")){
           
           click(clear_div.bounds().centerX(),clear_div.bounds().centerY());
           sleep(2000);
        }
    }
  
   // console.log("p-6666666666666"+new Date());
      //
      if(p_Search_element_contains(1,["开启地理位置权限","请在设置中，打开支付宝位置权限开关",""])){
        clear_div=className("android.widget.TextView").text("").enabled(true).findOnce();
        if(!(clear_div  && clear_div.text()=="")){
           clear_div=className("android.view.View").text("").enabled(true).findOnce();
        }
        if((clear_div  && clear_div.text()=="")){
           
           click(clear_div.bounds().centerX(),clear_div.bounds().centerY());
           sleep(2000);
        }
      }
    //  console.log("p-777777777777777"+new Date());
      //支付宝小程序的更新提示
      if(p_Search_element_contains(1,["更新提示","新版本已经准备好，是否重启应用？","取消","确定"])){
        clear_div=className("android.widget.TextView").text("取消").enabled(true).findOnce();
        if(!(clear_div  && clear_div.text()=="取消")){
           clear_div=className("android.view.View").text("取消").enabled(true).findOnce();
        }
        if(!(clear_div  && clear_div.text()=="取消")){
            clear_div=className("android.widget.Button").text("取消").enabled(true).findOnce();
         }
        if((clear_div  && clear_div.text()=="取消")){
          
           click(clear_div.bounds().centerX(),clear_div.bounds().centerY());
           sleep(2000);
        }
       }
     //  console.log("p-88888888888"+new Date());
  
   
   }
    
   
   
   
    /******
     * 获取任务执行清单的对象
     */
    function  p_hq_rw_Obj_init(rw_t_arr){
      let depth_obj;  //任务对应depth层信息
      for(var z=0;z<rw_t_arr.length;z++){
          let rw_list=className("android.view.View").text(""+rw_t_arr[z]).enabled(true).find();
          if(!(rw_list && rw_list.length>0)){
             rw_list=className("android.widget.TextView").text(""+rw_t_arr[z]).enabled(true).find();
          }
          if(rw_list && rw_list.length>0){
              /****优化：因部分任务签到的信息，导致无法具体定位到任务清单位置  采用取第2个位置的信息为优选****/
              if(rw_list.length>1){
                  depth_obj=rw_list[rw_list.length-1];
              }else if(rw_list.length>0){
                  depth_obj=rw_list[0];
              }else{
                  depth_obj;
              }
              break;
          }   
      }
      //toast("depth值:"+depth_v);
      return depth_obj;
   }
  
  
  
   /******
  * 【公共方法】
  * 动态任务过滤器
  * t:  Json格式正文信息【如：{name:"任务标题",jl:"奖励信息",ms:"描述"}】
  * m: 1：全量  2：去重
  *     信息增量
  * 
  * (方案1组合)
  */
  function  p_filter_temp_Obj_add(t,m){  
     // filter_temp_arr[t]=1;
     let z=true;
     if(m && m==2){
     //去重的方式
     if(JSON.stringify(filter_temp_Obj).indexOf(JSON.stringify(t)) == -1){
       console.info('该项不存在！');
     }else{
       console.info('该项已存在！');
       z=false;   
    //   filter_temp_Obj[JSON.stringify(filter_temp_Obj).indexOf(JSON.stringify(t))].count++
     }
   
    } 
     
    
     if(z){
         //fzt=true;
         filter_temp_Obj.push(t); //json新增数据
     }
     console.info(filter_temp_Obj);
    //  toast(filter_temp_arr[""+t+""]);
   }
   /******
   * 【公共方法】
   *  动态任务过滤器
   * t:Json格式正文信息【如：{name:"任务标题",jl:"奖励信息",ms:"描述"}】
   *   信息查询
   * 
   * (方案1组合)
   */
   function p_filter_temp_Obj_select(t){
     let fzt=false;
     //方案二：
     if(JSON.stringify(filter_temp_Obj).indexOf(JSON.stringify(t)) == -1){
       console.info('该项不存在！');
   }else{
       console.info('该项已存在！');
       fzt=true;
   }
   
     return fzt;
   }
   
  
  
  /********
  * 【公共方法】
  * 判定当前是否为手机运行中（recents状态下）应用清单界面，并且切换到recents状态
  * t: 核验的状态    1：精准   2.模糊【默认】   
  * hy_arr:核验当前页面中是否包含当前元素   数组方式
  * s: 每次验证的时间
  */
  function  ui_if_recents(t,hy_arr,s){
   let fzt=true;
  
   /****验证是否 进入recents状态*****/
   if(p_Search_element_contains(t,hy_arr)){
  
   }else{
     recents();
     sleep(s*1000);  //停留时间
   }
  
   return fzt;
  }
  
   
  
  
  /********
  * 【公共方法】
  *    任务异常过滤器
  *  t  待验证的信息
  *  no_app_list:  临时停止移除的应用清单信息    数组类型
  *   
  */
  function  p_if_rw_error(t,no_app_list){
   let app_cleanAll_error_arr=["支付宝","Auto.js","微信","无障碍","设置","QQ","智狗管家"]; /****防止被清除应用  ***/
    let fzt=false;
    if(app_cleanAll_error_arr.indexOf(t)>-1  ){
        fzt=true;
    }else if(no_app_list && no_app_list.indexOf(t)>-1){
        fzt=true;
    }
   return fzt;
  }
  
  
  /*********
  * 【公共方法】
  *   recents状态下，移除  指定的应用名称
  *  name：移除的app名称
  *  t: 核验的状态    1：精准   2.模糊【默认】   
  *  hy_arr:核验当前页面中是否包含当前元素   数组方式
  *  s: 每次验证的时间
  *  c: 最高频次   0：无限次   【防止未找到元素出现堵塞】
  *  fx: 移除模式  1:向上移除【默认】    2：向右移除
  * 
  */
  function recents_romve_app_name(name,t,hy_arr,s,c,fx){
   let fzt=false;
   let zt=true; //循环体
   let obj;  //寻找name 对象
   let i=0;  //计数器
   while(zt){
       i++;
       //p_Search_element_contains(1,["分屏模式"])
       if(!p_Search_element_contains(t,hy_arr)){
           /*****判定是否在recents状态下，必须保障在recents状态下****/
           recents();
       }
  
       sleep(800);
       obj=className("android.widget.TextView").text(""+name).enabled(true).findOnce();
       if(!(obj && obj.text()==(""+name))){
           /***未找到对象，通过其他来寻找**/
           obj=className("android.view.View").text(""+name).enabled(true).findOnce();
       }
  
       console.info("移除寻找目标名称："+name);
       if(obj && obj.text()==(""+name)){
           /***保障找到合适目标****/
           if(p_Search_element_contains(t,hy_arr)){
               console.info("移除目标操作");
              if(fx && fx==2){
               console.info("向右移除操作");
               fzt=p_rwlist_swipe_right(obj.bounds().left,obj.bounds().centerY(),(device.height/10)*0.7);//向右移除
              }else{
               console.info("向上移除操作");
               fzt=p_rwlist_swipe_up(obj.bounds().centerX());  //保障移除成功 向上移除
              }
               if(fzt){
                   /****成功后，退出循环体****/
                   fz=true;
                   break;
               }
           }
       }
  
       if(c==0){
           //无效循环，只能通过其他途径禁止
           console.info("异常退出移除方法recents_romve_app_name()无限循环："+i);
       }else if(c<=i){
           console.info("异常退出移除方法recents_romve_app_name()："+i);
           //启动阀值
           fz=true;
           break;
       } 
     
       sleep(s*1000);  //每次的间隔停留时间
  
   }
   return fzt;
  }
  
  
  
  
  /*********
  * 【公共方法】
  *   recents状态下，点击打开  指定的应用名称
  *  name：移除的app名称
  *  t: 核验的状态    1：精准   2.模糊【默认】   
  *  hy_arr:核验当前页面中是否包含当前元素   数组方式
  *  s: 每次验证的时间
  *  c: 最高频次   0：无限次   【防止未找到元素出现堵塞】
  * 
  
  (来源： 【公共】移除某应用-基于多元素方案.js)
  */
  function recents_click_app_name(name,t,hy_arr,s,c){
   let fzt=false;
   let zt=true; //循环体
   let obj;  //寻找name 对象
   let i=0;  //计数器
   while(zt){
       i++;
       //p_Search_element_contains(1,["分屏模式"])
       if(!p_Search_element_contains(t,hy_arr)){
           /*****判定是否在recents状态下，必须保障在recents状态下****/
           recents();
       }
  
       sleep(1000);
       obj=className("android.widget.TextView").text(""+name).enabled(true).findOnce();
       if(!(obj && obj.text()==(""+name))){
           /***未找到对象，通过其他来寻找**/
           obj=className("android.view.View").text(""+name).enabled(true).findOnce();
       }
  
       console.info("recents状态打开寻找目标名称："+name);
       if(obj && obj.text()==(""+name)){
           /***保障找到合适目标****/
           if(p_Search_element_contains(t,hy_arr)){
               console.info("点击事件打开目标操作"+obj.bounds().centerX());
               if(obj.bounds() && obj.bounds().centerX()>0){
                 click(obj.bounds().centerX(),obj.bounds().centerY()+(device.height/10)*0.7);
               }else{
                 click(40,obj.bounds().centerY()+(device.height/10)*0.7);
               }
  
                 /***********
              * 验证是否退出了，窗口界面
              *   2023.10.31优化
              */
              /*****判定是否离开原界面****/
              if(ui_if_leave_interface(1,hy_arr,0.1,30)){
               fzt=true;
                /****成功后，退出循环体****/
                zt=false;
                break;
               }else{
                   zt=false;
                   break;
               } 
                  
           }
       }
  
       if(c==0){
           //无效循环，只能通过其他途径禁止
           console.info("异常打开方法recents_click_app_name()无限循环："+i);
       }else if(c<=i){
           console.info("异常打开方法recents_click_app_name()："+i);
           //启动阀值，关闭程序
           zt=false;
           break;
       } 
     
       sleep(s*1000);  //每次的间隔停留时间
  
   }
   return fzt;
  }
  
  
  
  
  /****
  * 【公共方法】移除任务列表任务  向上滑动移除任务
  *     x:  滑动的x坐标位置
  *     通过swipe移动
  * 【方案二】  
  * 
  * 向上移除方案
  *  *****/
  function p_rwlist_swipe_up(x){
   let fzt=true;
   /******
  *优化负数问题 
  */
  if(x>20){
  
  }else{
      x=40;
  }
   //向上移除方案
   swipe(x, (device.height/10)*6.5, x+5, (device.height/10)*0.8, 400);
  
  return fzt;
  }
  
  
  /****
  * 【公共方法】移除任务列表任务  向上滑动移除任务
  *     x:滑动的X坐标位置
  *     y:  滑动的Y坐标位置
  *     offset_Down:向下偏移
  *     通过swipe移动
  * 【方案二】  
  * 
  * 向右侧移除方案
  *  *****/
  function p_rwlist_swipe_right(x,y,offset_Down){
   let fzt=true;
   /******
  *优化负数问题 
  */
  if(x>20){
  
  }else{
      x=40;
  }
  
  if(y>20){
  
  }else{
      y=40;
  }
  
  if(offset_Down>=0){
     y=y+offset_Down;
  }
  
  
   //向右移除方案
   swipe(x, y, (device.width/10)*9, y+5, 400);
  
  return fzt;
  }
   
  
  
  /*******
  * 【公共方法】
  * 通过多元素条件，来保障界面回退机制
  * t: 核验的状态    1：精准   2.模糊【默认】   
  * hy_arr:核验当前页面中是否包含当前元素   数组方式
  * s: 每次验证的时间
  * c: 最高频次   0：无限次   【防止未找到元素出现堵塞】
  * 
  */
  function  ui_rw_RollBACK(t,hy_arr,s,c){
     let fzt=false;
     let zt=true;
     let i=0; //计数器 
   
     while(zt){
       i++;
       console.info("执行回滚原界面"+i);
       p_for_clear_div_main(2,0.1);//总共0.5秒  执行2轮
   
  
       //防止一次无效验证，提前验证2轮 信息
       if(p_Search_element_contains(t,hy_arr)){
         //找到合适的界面元素
         console.info("执行回滚结束提前拦截0状态："+i);
         fzt=true;
         break;
       }
       //防止一次无效验证，提前验证2轮 信息
       if(p_Search_element_contains(t,hy_arr)){
         //找到合适的界面元素
         console.info("执行回滚结束提前拦截1状态："+i);
         fzt=true;
         break;
       }
  
  
       if(p_Search_element_contains(t,hy_arr)){
         //找到合适的界面元素
         console.info("执行回滚结束1状态："+i);
         fzt=true;
         break;
       }else{
         //未返回原界面，执行回退操作
         //考虑回退中降噪—清除过滤问题。
   
         //p_
   
   
        console.info("被执行了回滚_退出"+i);
         //回退操作
         back();
       }
   
       if(c==0){
         //无效循环，只能通过其他途径禁止
   
       }else if(c<=i){
         console.info("执行回滚结束2状态："+i);
         //启动阀值
         break;
       } 
   
       sleep(s*1000);
   
     }
   return fzt;
   }
  
  
  
   
  /***********
  * 【公共方法】
  * 判断是否有离开任务界面
  * t: 核验的状态    1：精准   2.模糊【默认】   
  * hy_arr:核验当前页面中是否包含当前元素   数组方式
  * s: 每次验证的时间
  * c: 最高频次   0：无限次   【防止未找到元素出现堵塞】
  * 
  */
  function  ui_if_leave_interface(t,hy_arr,s,c){
   let fzt=true;
   //let zt=true;
   let i=0; //计数器 
  
  while(p_Search_element_contains(t,hy_arr)){
  /********/
  i++;
  console.info("执行验证是否离开任务界面-当前次数："+i);
  
  sleep(s*1000);  //停留时间
  console.info("停留在原界面，未进入新页面。"+i+"次");
  //toast("停留在原界面，未进入新页面。"+i+"次");
  
  if(c==0){
   //无效循环，只能通过其他途径禁止
  
  }else if(c<=i){
   console.info("执行回滚结束2状态："+i);
   fzt=false;  //异常离开
   //启动阀值
   break;
  } 
  
  }
  
  return  fzt;
  }
  
  
  
  
     /**********
   * 【公共方法】
   * 
   *   核验元素的存在情况  
   * t: 核验的状态    1：精准   2.模糊【默认】   
   * hy_arr:核验当前页面中是否包含当前元素   数组方式
   * 
   * 返回值： true（存在）  false（不存在某个元素）
   * 
   */
     function p_Search_element_contains(t,hy_arr){
      
      let fzt=true;
      let hy_v_obj;
      let hy_w_obj;
      let hy_b_obj;
      let hy_S_obj;
      let hy_Img_obj;
      
  
      for(let i=0;i<hy_arr.length;i++){
          //  toast(hy_arr[i]);
  
          if(t && t==1){
            hy_v_obj=className("android.view.View").text(""+hy_arr[i]).enabled(true).findOnce();
            hy_w_obj=className("android.widget.TextView").text(""+hy_arr[i]).enabled(true).findOnce();
            hy_b_obj=className("android.widget.Button").text(""+hy_arr[i]).enabled(true).findOnce();
            hy_S_obj=className("android.widget.ScrollView").text(""+hy_arr[i]).enabled(true).findOnce();
            hy_Img_obj=className("android.widget.Image").text(""+hy_arr[i]).enabled(true).findOnce();
          }else{
            hy_v_obj=className("android.view.View").textContains(""+hy_arr[i]).enabled(true).findOnce();
            hy_w_obj=className("android.widget.TextView").textContains(""+hy_arr[i]).enabled(true).findOnce();
            hy_b_obj=className("android.widget.Button").textContains(""+hy_arr[i]).enabled(true).findOnce();
            hy_S_obj=className("android.widget.ScrollView").textContains(""+hy_arr[i]).enabled(true).findOnce();
            hy_Img_obj=className("android.widget.Image").textContains(""+hy_arr[i]).enabled(true).findOnce();
          }
  
           // sleep(3000);
            if((hy_v_obj && hy_v_obj.text().indexOf(""+hy_arr[i])>-1) || (hy_w_obj && hy_w_obj.text().indexOf(""+hy_arr[i])>-1)
            ||(hy_b_obj && hy_b_obj.text().indexOf(""+hy_arr[i])>-1) ||(hy_S_obj && hy_S_obj.text().indexOf(""+hy_arr[i])>-1)
            ||(hy_Img_obj && hy_Img_obj.text().indexOf(""+hy_arr[i])>-1) ){
            
            }else{
             //   toast("找不到么"+hy_arr[i]);
                fzt=false;
                break;
            }
  
  
  
        }
  
        return fzt;
  }
  
  
  
  
  
  /*******
  * 矫正方法
  * 【通过对象】
  *  寻找对象的位置
  * o:  寻找对象
  * shifting_top：  偏移上方    2【默认】
  * shifting_bottom：偏移下方   8.5【默认】
  * 
  */
  function  UImain_obj_correct(o,shifting_top,shifting_bottom){
     let  fzt=false; /****方法执行状态****/
     let  obj=o;     /****存储原本对象信息****/
  
     if(shifting_top>0){
  
     }else{
         shifting_top=2;
     }
  
     if(shifting_bottom>0){
  
     }else{
         shifting_bottom=8.5;
     }
  
     if(o && o.bounds() && o.bounds().bottom>=0){
      //有效传参
      let zt=true;   /****循环体****/
      let app_h=device.height;
      while(zt){
  
          sleep(1000);
          obj=className(""+o.className()).depth(o.depth()).indexInParent(o.indexInParent()).text(""+o.text()).enabled(true).findOnce();
  
        //  toast("bottom："+obj.bounds().bottom);
  
          if(obj && obj.bounds() && obj.bounds().bottom>=(app_h-(app_h/10)*shifting_top)){
              /****矫正中  向下找目标*****/
              fzt=true; 
              sml_move((device.width/10)*5, (device.height/10)*9, (device.width/10)*5, (device.height/10)*3, 600);
          }else if(obj && obj.bounds() && obj.bounds().bottom<=(app_h-(app_h/10)*shifting_bottom)){
               /****矫正中  向上找目标*****/
              fzt=true; 
              sml_move((device.width/10)*5, (device.height/10)*3, (device.width/10)*5, (device.height/10)*9, 600);
          }else{
              /****矫正结束****/
             // toast("可以进入么");
              zt=false;
              
          }
  
        //  sleep(2000);
      }
  
  
     }else{
       //无效传参
       fzt=false;
     }
  
     return fzt;
  }
  
  
  
  /*******
   * 矫正方法
   * 【通过文本内容】
   *  寻找对象的位置
   * o:  文本
  * shifting_top：  偏移上方    2【默认】
  * shifting_bottom：偏移下方   8.5【默认】
   */
  function  UImain_txt_correct(o,shifting_top,shifting_bottom){
      let  fzt=false; /****方法执行状态****/
      let  obj=o;     /****存储原本对象信息****/
   
     // toast("????");
     if(shifting_top>0){
  
     }else{
         shifting_top=2;
     }
  
     if(shifting_bottom>0){
  
     }else{
         shifting_bottom=8.5;
     }
  
      if(o && o.length>0){
       /***文本信息***/
       let zt=true;   /****循环体****/
       let app_h=device.height;
       while(zt){
   
         
           sleep(1000);
           obj=className("android.view.View").text(""+o).enabled(true).findOnce();
           if(!(obj && obj.text()==(""+o))){
               obj=className("android.widget.TextView").text(""+o).enabled(true).findOnce();
           }
   
           
           if(obj && obj.bounds() && obj.bounds().bottom>=(app_h-(app_h/10)*shifting_top)){
               /****矫正中  向下找目标*****/
               console.info("向下找目标"+obj.bounds().bottom+"|||||"+(app_h-(app_h/10)*shifting_top));
               fzt=true; 
               sml_move((device.width/10)*5, (device.height/10)*7.8, (device.width/10)*5, (device.height/10)*3, 600);
           }else if(obj && obj.bounds() && obj.bounds().bottom<=(app_h-(app_h/10)*shifting_bottom)){
                /****矫正中  向上找目标*****/
                console.info("向上找目标");
               fzt=true; 
               sml_move((device.width/10)*5, (device.height/10)*3, (device.width/10)*5, (device.height/10)*7.1, 600);
           }else{
               /****矫正结束****/
              // toast("可以进入么");
               zt=false;
               //fzt=false;
           }
   
         //  sleep(2000);
       }
      }else{
        //无效传参
        fzt=false;
      }
   
      return fzt;
   }
  
  
   
   
   /****
  * 公共类方法
  * 
  * 滑动方式  停留 控制器****/
  //t1 （停止时间） s滑动方式（1.上 2.下 3.左 4.右）
  function simulator_move(t1,s){
   //等待时间
   sleep(t1);
   /****
  if(s==1){
  //上
  sml_move(800, 500, 800, 1300, 1000);
  }else if(s==2){
  //下
  sml_move(400, 1200, 450, 500, 1000);
  
  }else if(s==3){
   //左
   sml_move(100, 900, 800, 900, 1000);
   
  }else if(s==4){
   //右
   sml_move(800, 900, 100, 900, 1000);
  }
  *****/
  if(s==1){
   /**上***/
   sml_move((device.width/10)*5, (device.height/20)*3, (device.width/10)*5, (device.height/20)*17, 300);
  }else if(s==2){
   /**下***/
   //sml_move((device.width/10)*5, (device.height/10)*7, (device.width/10)*5, (device.height/10)*5, 400);
   sml_move((device.width/10)*5, (device.height/20)*17, (device.width/10)*5, (device.height/20)*3, 300);
  }else if(s==3){
    /**左***/
    sml_move((device.width/10)*1.5, (device.height/10)*5, (device.width/10)*8, (device.height/10)*5, 300);
    
  }else if(s==4){
    /**右***/
    sml_move((device.width/10)*8, (device.height/10)*5, (device.width/10)*1.5, (device.height/10)*5, 300);
  }
  
  }
   
   
   //长距离测试
   //sml_move(400, 1800, 800, 230, 1000);
   //短距离测试
   //sml_move(400, 1000, 800, 600, 1000);
   function bezier_curves(cp, t) {
      cx = 3.0 * (cp[1].x - cp[0].x); 
      bx = 3.0 * (cp[2].x - cp[1].x) - cx; 
      ax = cp[3].x - cp[0].x - cx - bx; 
      cy = 3.0 * (cp[1].y - cp[0].y); 
      by = 3.0 * (cp[2].y - cp[1].y) - cy; 
      ay = cp[3].y - cp[0].y - cy - by; 
      
      tSquared = t * t; 
      tCubed = tSquared * t; 
      result = {
          "x": 0,
          "y": 0
      };
      result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x; 
      result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y; 
      return result; 
   };
   
   //仿真随机带曲线滑动  
   //qx, qy, zx, zy, time 代表起点x,起点y,终点x,终点y,过程耗时单位毫秒
   function sml_move(qx, qy, zx, zy, time) {
      var xxy = [time];
      var point = [];
      var dx0 = {
          "x": qx,
          "y": qy
      };
   
      var dx1 = {
          "x": random(qx - 100, qx + 100),
          "y": random(qy , qy + 50)
      };
      var dx2 = {
          "x": random(zx - 100, zx + 100),
          "y": random(zy , zy + 50),
      };
      var dx3 = {
          "x": zx,
          "y": zy
      };
      for (var i = 0; i < 4; i++) {
   
          eval("point.push(dx" + i + ")");
   
      };
      log(point[3].x)
   
      for (let i = 0; i < 1; i += 0.08) {
          xxyy = [parseInt(bezier_curves(point, i).x), parseInt(bezier_curves(point, i).y)]
   
          xxy.push(xxyy);
   
      }
   
    //  log(xxy);
      gesture.apply(null, xxy);
   };
   
  
   //初始化
  function initializeData(){
  
    
     storage_name_key="2444717083@qq.com:智狗管家111111111Content";
     fx_ty=sto_base_select_fx_ty();
     recents_depth_v=sto_base_select_recents_depth_v();   /***depth的值情况*****/
     recents_id_v=sto_base_select_recents_id_v();      /****id的值情况****/
    /********* */
     recents_zt_arr=sto_base_select_recents_zt_arr();   //recents状态验证 关键词
  
     
  }
  
  
  //运行异常
  function run_error(){
    sto_run_rw_error_add(true);
  //  engines.stopAll();   //可结束所有 setInterval
  }
  
  //运行成功结果
  function run_success(){
    sto_run_rw_ty_add(true);
   // engines.stopAll();   //可结束所有 setInterval
  }
  
  
   //查询
  function  sto_base_select_recents_depth_v(){
    return pt_storage_get("recents_depth_v");
  }
  function  sto_base_select_recents_id_v(){
    return  pt_storage_get("recents_id_v");
  }
  function  sto_base_select_recents_zt_arr(){
    return pt_storage_get("recents_zt_arr");
  }
  function  sto_base_select_fx_ty(){
    return  pt_storage_get("recents_fx_ty");
  }
  //增加
  function  sto_base_add_recents_depth_v(v){
    return  pt_storage_add("recents_depth_v",v);
  }
  function  sto_base_add_recents_id_v(v){
    return  pt_storage_add("recents_id_v",v);
  }
  function  sto_base_add_recents_zt_arr(v){
    return   pt_storage_add("recents_zt_arr",v);
  }
  function  sto_base_add_fx_ty(v){
    return  pt_storage_add("recents_fx_ty",v);
  }
  //删除
  function  sto_base_delete_recents_depth_v(){
    console.info("清除storages中recents_depth_v信息");
    return  pt_storage_delete("recents_depth_v");
  }
  function  sto_base_delete_recents_id_v(){
    console.info("清除storages中recents_id_v信息");
    return  pt_storage_delete("recents_id_v");
  }
  function  sto_base_delete_recents_zt_arr(){
    console.info("清除storages中recents_zt_arr信息");
    return pt_storage_delete("recents_zt_arr");
  }
  function  sto_base_delete_fx_ty(){
    console.info("清除storages中recents_fx_ty信息");
    return  pt_storage_delete("recents_fx_ty");
  }
  
  function sto_run_rw_ty_select(){
    return  pt_storage_get("run_rw_ty");
  }
  function sto_run_rw_ty_add(v){
    return  pt_storage_add("run_rw_ty",v);
  }
  function sto_run_rw_ty_delete(){
    return  pt_storage_delete("run_rw_ty");
  }
  
  
  function sto_run_rw_error_select(){
    return  pt_storage_get("run_rw_error");
  }
  function sto_run_rw_error_add(v){
    return  pt_storage_add("run_rw_error",v);
  }
  function sto_run_rw_error_delete(){
    return  pt_storage_delete("run_rw_error");
  }
  
  
  /********
   * 【公共】添加本地信息
   *  key：key对象
   *  value:对应的值
   * 
   *  返回： true(成功)  false（失败）
   * 
   * 【平台侧信息】
   */
  function  pt_storage_add(key,value){
      let fzt=true;
      try{
      let storage = storages.create(storage_name_key);
      storage.put(key, value);
      }catch(err) {
          console.info(err.message);
          fzt=false;
      }
      return fzt;
  }
  
  /*******
   * 【公共】查询本地信息
   * 返回对应key的存储信息
   * key：key对象
   * 【平台侧信息】
   */
  function  pt_storage_get(key){
      let v="";
      try{
      let storage = storages.create(storage_name_key);
      if(storage.contains(""+key)){//判断是否存在相应信息
          v=storage.get(key);
      } 
      }catch(err) {
          console.info(err.message);
          v="error";
      }
      return v;
  }
  
  
  /******
   * 【公共】删除storage中指定的key信息
   * key: key对象
   * 【平台侧信息】
   */
  function pt_storage_delete(key){
      let fzt=true;
      try{
          storage.remove(key);  //删除对应 指定key
          if(storage.contains(key)){
              fzt=false;
          }
      }catch(err) {
          console.info(err.message);
          fzt=false;
      }
      return fzt;
  }
  
  /******
   * 【公共】清除storage所有信息
   * 
   * 【平台侧信息】
   */
  function pt_storage_deleteAll(){
      try{
          let storage = storages.create(storage_name_key);
          //移除该本地存储的所有数据
           storage.clear();
      }catch(err) {
          console.info(err.message);
      }
  }
  
  
  
  
  
  


  /*****
 * 字符串中提取数字
 */
function extractNumbers(str) {
  let pattern = /\d+/g;
  let matches = str.match(pattern);
  return matches ? matches.map(Number) : [];
}